package com.leo.blog.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.leo.blog.entity.Blog;

public interface BlogDao {
	
	/**
	 * 取得每个类别下的前N条记录
	 * @return
	 */
	List<Blog> queryBlogByAllType();
	
	int queryBlogByBlogTypeCount(int blogTypeId);
	
	/**
	 * 添加文章
	 * @param blog
	 * @return
	 */
	int insertBlog(Blog blog);
	
	/**
	 * 查询文章发表数,草稿书和回收数
	 * @return
	 */
	List<Blog> queryBlogCountByStatus();
	
	/**
	 * 更新文章信息
	 * @param blog
	 * @return
	 */
	int updateBlog(Blog blog);
	
	/**
	 * 根据blogId查询文章
	 * @param blogId
	 * @return
	 */
	Blog queryByBlogId(int blogId);
	/**
	 * 根据blogId查询前后一篇文章
	 * @param blogId
	 * @return
	 */
	Blog queryByBlogIdPreAndNext(int blogId);
	/**
	 * 获取最后一条数据的id
	 * @return
	 */
	int queryByBlogMaxId();
	
	
	/**
	 * 返回queryBlogList的总数
	 * 
	 * @param blogCondition
	 * @return
	 */
	int queryBlogCount(@Param("blogCondition") Blog blogCondition);
	/**
	 * 分页查询文章,可输入的条件有: 文章名(模糊), 状态, 置顶, 推荐, 类别
	 * 
	 * @param blogCondition(输入条件)
	 * @param rowIndex(从第几行开始取数据)
	 * @param pageSize(返回的条数)
	 * @return
	 */
	List<Blog> queryBlogList(@Param("blogCondition") Blog blogCondition, @Param("rowIndex") int rowIndex, 
			@Param("pageSize") int pageSize);
	
	List<Blog> queryBlogListByClick(@Param("blogCondition") Blog blogCondition, @Param("rowIndex") int rowIndex, 
			@Param("pageSize") int pageSize);
	
	/**
 	 *  获取博客信息，根据日期月份分组查询
 	 * @return
 	 */
 	List<?>  queryBlogListByDate(@Param("blogCondition") Blog blogCondition);
 	
 	/**
 	 *  获取博客信息，根据状态分组查询
 	 * @return
 	 */
 	List<?>  queryBlogListByStatus();

 	/**
 	 *  获取博客信息，根据状态分组查询
 	 * @return
 	 */
 	List<?> queryBlogByClick();
}
